Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix reset timing for torque integration in MTQ controller #309

Merged
merged 2 commits into from
May 21, 2024

Conversation

suzuki-toshihir0
Copy link
Member

@suzuki-toshihir0 suzuki-toshihir0 commented May 20, 2024

Issue

  • N/A

詳細

起こっていた問題

これまでの mtq_seiren_controller.c の実装では、APP_AOCS_MANAGER_MAGNETIC_EXCLUSIVE_CONTROL_STATE_OBSERVE のケースに複数回連続で入ると、「トルクから出力磁気モーメントを計算 --> 指令トルク積分値をリセット」というサイクルを複数回繰り返してしまい、指令トルクがリセットされた状態で出力磁気モーメントを再計算されてしまうという問題があった。

switch (aocs_manager->magnetic_exclusive_control_timer_state)
{
case APP_AOCS_MANAGER_MAGNETIC_EXCLUSIVE_CONTROL_STATE_OBSERVE:
// 次にMTQを出力するとき、何秒間電流を流すかを決める
APP_MTQ_SEIREN_CONTROLLER_convert_mag_moment_to_output_duration_();
// 次回の出力を決めたら、トルク積分値をリセットする
APP_MTQ_SEIREN_CONTROLLER_reset_integrated_torque_();
break;

本PRにおける対応

APP_AOCS_MANAGER_MAGNETIC_EXCLUSIVE_CONTROL_STATE_OBSERVE の間は指令トルク積分値をリセットせず、APP_AOCS_MANAGER_MAGNETIC_EXCLUSIVE_CONTROL_STATE_CONTROL に入った初回で指令トルク積分値がリセットされるように変更した。こうすることで、出力磁気モーメントを計算するときには 積分値がリセットされないことを保証している。

検証結果

ビルドチェック (どちらもチェック)

  • SILSでのビルドチェックに通った(CIで確認)
  • vMicroでのビルドチェックに通った

動作確認チェック (いずれかをチェック)

  • SILSでアルゴリズムが想定通りに動いた
  • 実機でアルゴリズムが想定通りに動いた
  • (テレコマ試験の場合)コマンドファイルを使った試験をパスした

試験結果詳細記述場所 or 詳細ログ保存場所へのリンク

  • 図や表で記述する

補足

何かあれば書く。なければNAとする。

@suzuki-toshihir0 suzuki-toshihir0 added 🐛 bug Something isn't working 🚀 priority::high priority high 🐟 patch Patch Update labels May 20, 2024
@suzuki-toshihir0 suzuki-toshihir0 self-assigned this May 20, 2024
@suzuki-toshihir0 suzuki-toshihir0 requested review from sksat and a team as code owners May 20, 2024 07:53
@suzuki-toshihir0 suzuki-toshihir0 requested review from 200km, seki-hiro, t-hosonuma and conjikidow and removed request for a team May 20, 2024 07:53
@t-hosonuma
Copy link
Contributor

@suzuki-toshihir0
有難うございます 🙏
ローカルの修正だと,ケースがAPP_AOCS_MANAGER_MAGNETIC_EXCLUSIVE_CONTROL_STATE_STANDBYの時も一応,mtq_seiren_controller_.integrator_status = MTQ_SEIREN_CONTROLLER_TORQUE_INTEGRATION_COMPLETED;にしていますが,これは不要ですかね…?

@suzuki-toshihir0
Copy link
Member Author

ロジック的には不要なのですが、OBSERVE --> CONTROL --> STANDBYがこの順に回るというのがこのファイルからだと読み取りにくいというのはあるので、分かりやすさのために追加するのはアリだと思います。そうしておきましょう。

@suzuki-toshihir0 suzuki-toshihir0 marked this pull request as draft May 20, 2024 08:09
@suzuki-toshihir0
Copy link
Member Author

細沼さんと別で話し、もう少し丁寧に考えるべき可能性が出てきたので、一旦整理し直す。

@suzuki-toshihir0 suzuki-toshihir0 marked this pull request as ready for review May 20, 2024 11:38
@suzuki-toshihir0
Copy link
Member Author

suzuki-toshihir0 commented May 20, 2024

もとの問題は、指令トルク積分値が解放されたあと、以下でzero checkに抵触していたこと。

C2A_MATH_ERROR torque_non_zero_check = VECTOR3_normalize(trq_vec_normalized, torque_target_body_Nm);
C2A_MATH_ERROR mag_non_zero_check = VECTOR3_normalize(mag_vec_normalized, mag_vec_est_body_nT);
if ((torque_non_zero_check == C2A_MATH_ERROR_SINGULAR) || (mag_non_zero_check == C2A_MATH_ERROR_SINGULAR))
{
return CROSS_PRODUCT_CONTROL_ERROR_INVALID_PARAMS;
}

@suzuki-toshihir0 suzuki-toshihir0 force-pushed the hotfix/fix_integrated_torque_clear_timing branch from 2dba3ed to 3e15a76 Compare May 20, 2024 12:56
@t-hosonuma
Copy link
Contributor

鈴木君と相談の上,ローカルで先行実施した応急処置と結果が一致することを確認しましたので,Approveします.

@suzuki-toshihir0 suzuki-toshihir0 merged commit c8caecd into develop May 21, 2024
9 of 11 checks passed
@suzuki-toshihir0 suzuki-toshihir0 deleted the hotfix/fix_integrated_torque_clear_timing branch May 21, 2024 00:28
@suzuki-toshihir0
Copy link
Member Author

ありがとうございます!マージしました。

@conjikidow conjikidow added this to the v10.0.0 Major update milestone May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug Something isn't working 🐟 patch Patch Update 🚀 priority::high priority high
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants